import { ProxyBase } from "../proxy/ProxyBase";
import { ProxyWnd } from "../proxy/ProxyWnd";
import { uiMgr } from "./UIMgr";

/**
 * ui基类 
 * 继承该类必须绑定装饰器@bind
 * 为方便使用使用泛型并指定@proxy
 */
export class UIBase<T extends ProxyBase> extends ProxyWnd<T> {
    /**
     * 窗口状态，当窗口被自动销毁时状态会变为UIState.NONE
     */
    get state() {
        return uiMgr.getState(this.meta.proxyName)
    }

    /** 
     * 窗口参数,在onInit之后，onShow之前设置
     */
    args: any;

    onShow(): void {

    }

    /**
     * 被覆盖
     */
    onCover(proxyName: string) {

    }

    /**
     * 回到顶层
     */
    onBackTop() {

    }

    /**
     * 关闭
     */
    onClose(): void {

    }

    /**
     * 关闭自己
     */
    closeSelf() {
        uiMgr.close(this.meta.proxyName)
    }
}